---
title: Migrate to moon
---

import NextSteps from '@site/src/components/NextSteps';
import LangPartials from '@site/src/components/LangPartials';

Now that we've talked about the workspace, projects, tasks, and more, we must talk about something
important... Should you embrace moon tasks? Or keep using language/ecosystem specific scripts? Or
both (incremental adoption)?

## Migrate to moon tasks

We suggest using moon tasks (of course), as they provide far more granular control and configurable
options than scripts, and a `moon.yml` is a better
[source of truth](./faq#what-should-be-considered-the-source-of-truth). Scripts aren't powerful
enough to scale for large codebases.

An example of what this may look like can be found below. This _may_ look like a lot, but it pays
dividends in the long run.

import MigrateBun from './__partials__/migrate/bun/migrate.mdx';
import MigrateDeno from './__partials__/migrate/deno/migrate.mdx';
import MigrateGo from './__partials__/migrate/go/migrate.mdx';
import MigrateNode from './__partials__/migrate/node/migrate.mdx';
import MigratePHP from './__partials__/migrate/php/migrate.mdx';
import MigratePython from './__partials__/migrate/python/migrate.mdx';
import MigrateRuby from './__partials__/migrate/ruby/migrate.mdx';
import MigrateRust from './__partials__/migrate/rust/migrate.mdx';

<LangPartials>
  <MigrateBun key="bun" />
  <MigrateDeno key="deno" />
  <MigrateGo key="go" />
  <MigrateNode key="node" />
  <MigratePHP key="php" />
  <MigratePython key="python" />
  <MigrateRuby key="ruby" />
  <MigrateRust key="rust" />
</LangPartials>

## Continue using scripts

import ScriptsBun from './__partials__/migrate/bun/scripts.mdx';
import ScriptsDeno from './__partials__/migrate/deno/scripts.mdx';
import ScriptsGo from './__partials__/migrate/go/scripts.mdx';
import ScriptsNode from './__partials__/migrate/node/scripts.mdx';
import ScriptsPHP from './__partials__/migrate/php/scripts.mdx';
import ScriptsPython from './__partials__/migrate/python/scripts.mdx';
import ScriptsRuby from './__partials__/migrate/ruby/scripts.mdx';
import ScriptsRust from './__partials__/migrate/rust/scripts.mdx';

<LangPartials>
  <ScriptsBun key="bun" />
  <ScriptsDeno key="deno" />
  <ScriptsGo key="go" />
  <ScriptsNode key="node" />
  <ScriptsPHP key="php" />
  <ScriptsPython key="python" />
  <ScriptsRuby key="ruby" />
  <ScriptsRust key="rust" />
</LangPartials>

## Next steps

By this point, you should have a better understanding behind moon's fundamentals! Why not adopt
incrementally next? Jump into [guides](./guides/ci) for advanced use cases or [concepts](./concepts)
for a deeper understanding.

<NextSteps
  links={[
    { icon: 'discord', label: 'Community help & support', url: 'https://discord.gg/qCh9MEynv2' },
    { icon: 'twitter', label: 'Releases & updates', url: 'https://twitter.com/tothemoonrepo' },
  ]}
/>
